Most computer programs are written directly in a programming language by a skilled programmer. To ease the task of the programmer, so-called "high-level" languages, such as "BASIC", "COBOL" and "C", are available which allow the programmer to write his source code in relatively easily understood natural language expressions. Such source code is converted by a compiler program to machine level instructions (object code) which are capable of direct execution by a digital computer. More difficult low level assembler languages are available whose instructions are closer to those of the actual computer. Assembler language source code is converted into executable instructions by an assembler program, which is much simpler than a compiler. Some languages are also designed to be directly interpreted at run-time by an interpreter program without prior compilation or assembly.
Whichever type of language is used, the programmer needs to know the syntax and functions provided by the programming language as well as to have a clear and detailed understanding of the task or application the program is to perform.
Various tools exist to assist the programmer in efficient production of program code but there is an increasing need for tools which enable non-programmers with detailed knowledge of an application to produce working program code (specifically a COBOL program) from non-procedural terminal inputs. However, the amount of analysis and understanding of the detailed program structured required is still substantial.
In cases where there is a specific application, special purpose programs are available which provide a user interface tailored to the nature of the application. So called "spreadsheet" programs are an example, enabling the manipulation of tabular data and the performing of financial or arithmetical calculations on the contents. In a sense, the user is creating a customized procedure analogous to a program.
One area in which advances have been made is in the field of Expert Systems. In this area, it is well recognized that the creation of an expert system computer program is advantageously split between the computer programmer and a knowledge engineer whose job is to determine the rules for providing expert advice in a particular field. In some cases, an actual expert in the field can replace the knowledge engineer.
Initially, the programmer was responsible for coding the rules or knowledge base into the program but current expert systems more typically provide both "developer interfaces" and "user interfaces". The "developer interfaces" allow the non-screen interactive entry of rules by a developer who is not necessarily a programmer. The "user interface" is the interface presented to the end-user who needs the expert advice. Several such systems are described in the book "Expert Systems--Tools and Application" (P. Harmon, et al.; Wiley, 1988).
U.S. Pat. No. 4,891,766, entitled "Editor For Expert Systems", describes a system in which the expert (designer) is led through a series of screens which allow editing of "classes" of input information, editing of "rules" and the placing of the rules in hierarchy ("rule tree"). However, only single rules are processed at a time and their relationship to other rules is only visible to the expert when the "rule tree" is displayed. Even then, the rules are only represented symbolically in the rule tree and are not displayed in full.
As used herein, the term "rules-based program" is not intended to be limited to the field of expert systems but to any programming application in which human expert knowledge, expressible as set of rules, is fundamental to the creation of the program.
A technique for expressing program logic known to programmers is the "decision tablet". This is a sort of truth table in which conditions set out in one quadrant are evaluated and the logical possibilities which are the outcome of the evaluations are set out in columns in an adjacent quadrant. If the logical possibilities in a given column are satisfied, then appropriate actions listed in another quadrant of the table are carried out.
Decision tables are discussed in articles by M. M. Conhers, et al., (IBM Technical Disclosure Bulletin, Vol. 13, No. 11, April 1977, pp 3384), R. A. Davis (IBM Technical Disclosure Bulletin, Vol. 14, No. 9, February 1991, pp 2845) and G. A. Sharman (IBM Technical Disclosure Bulletin, Vol. 14, No. 12, May 1972, pp 3747). Although these articles recognize the possibility of writing programming statements in the form of decision tables and executing the tables during running of a program, use by non-programmers and the user interface for creation of an application and the input of data to the application and the input of data to the application is not described.